package database

import (
	"fmt"
	"strconv"
	"time"

	"github.com/go-redis/redis"
	"github.com/kadycui/web/utils"
)

var RDB *redis.Client

func RedisInit() {
	log := utils.InitLogger()
	redisHost := utils.GetEnv("REDIS_HOST", "10.16.168.61")
	redisPort := utils.GetEnv("REDIS_PORT", "6379")
	redisPassword := utils.GetEnv("REDIS_PASSWORD", "123456")
	redisDb, _ := strconv.Atoi(utils.GetEnv("REDIS_DB", "8"))

	log.Info("Redis连接信息:", redisHost, "-", redisPort, "-", redisPassword, "-", redisDb)

	redisAddr := fmt.Sprintf("%s:%s", redisHost, redisPort)

	rdb := redis.NewClient(&redis.Options{
		//Addrs: []string{"redis1:6379", "redis2:6379", "redis3:6379"},  Redis 主节点地址列表
		Addr:        redisAddr,
		Password:    redisPassword,    // 如果没有设置密码，可以将这一行注释掉
		DB:          redisDb,          // 数据库索引，默认为 0
		PoolSize:    10,               // 连接池大小，默认为 10
		PoolTimeout: 30 * time.Second, // 连接超时时间，默认为 30 秒
		IdleTimeout: 5 * time.Minute,  // 空闲连接超时时间，默认为 5 分钟
	})

	// 使用连接池中的连接进行 Redis 操作
	pong, err := rdb.Ping().Result()
	if err != nil {
		log.Fatal("redis连接异常" + err.Error())
	}

	log.Info("Redis连接成功:", pong)

	RDB = rdb
}
